/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import persistencia.JogadorDAO;

/**
 *
 * @author luiz.oliveira
 */
public class Sistema {
	public JogadorDAO jogadorDAO;
	public Jogador jogador;
	
	public Sistema() {
		this.jogadorDAO = new JogadorDAO();
	}
	
	public boolean login(String login, String password) {
		JogadorDAO jogadorDao = new JogadorDAO();
		Jogador jogador = jogadorDao.getByLogin(login);
		
		if(jogador != null && jogador.getPassword().equals(password)) {
			this.jogador = jogador;
			return true;
		}
		
		return false;
	}
	
	private ArrayList<Jogador> ranking10(ArrayList<Jogador> list) {
		ArrayList<Jogador> result = new ArrayList<Jogador>();
		int size = list.size();
		int position = 1;
		result.add(list.get(0));
		for(int i = 1; i < size; i++) {
			Jogador jogador = list.get(i);
			if(list.get(i - 1).getScore() != jogador.getScore()) {
				position++;
			}
			if(position <= 10) {
				result.add(jogador);
			}
		}
		
		return result;
	}
	
	public List<Jogador> ranking10Positivo() {
		ArrayList<Jogador> list = this.jogadorDAO.getList();
		
		EJogadorComparator jogadorComparator = EJogadorComparator.SCORE_POSITIVE;
		Collections.sort(list, jogadorComparator);
		
		int position = 0;
		int size = list.size();
		int i = 0;
		for(; i < size && position <= 10; i++) {
			if(position == 0 || list.get(i - 1).getScore() != list.get(i).getScore()) {
				position++;
			}
		}
		
		return list.subList(0, i - 1);
	}
	
	public List<Jogador> ranking10Negativo() {
		ArrayList<Jogador> list = this.jogadorDAO.getList();
		
		EJogadorComparator jogadorComparator = EJogadorComparator.SCORE_POSITIVE;
		Collections.sort(list, jogadorComparator);
		
		int position = 0;
		int size = list.size();
		int i = size - 1;
		for(; i >= 0 && position <= 10; i--) {
			if(position == 0 || list.get(i + 1).getScore() != list.get(i).getScore()) {
				position++;
			}
		}
		
		return list.subList(i + 1, size);
	}
}
